public class PractiseOOP {
    public static void main(String[] args) {

        //封装练习
        /**
         * 设计一个Student类，包含私有属性id（学号，整数）、name（姓名，字符串）、score（成绩，整数，0-100 之间）。
         * 要求：
         * 提供getter和setter方法，其中score的setter需验证成绩合法性（不在 0-100 之间则提示错误）。
         * 提供一个showInfo()方法，打印学生的完整信息（学号、姓名、成绩）
         */
        Student student = new Student();
        student.setId(122);
        student.setScore(98);
        student.setName("bella");
        student.showInfo();


        //继承和多态练习
        /**
         * 继承与多态练习：
         * 设计一个Shape（形状）抽象类，包含抽象方法calculateArea()（计算面积）和calculatePerimeter()（计算周长）。
         * 基于Shape类，派生出Circle（圆形）和Rectangle（矩形）类，分别实现面积和周长的计算（圆形需包含半径属性，矩形需包含长和宽属性）。
         * 最后，在测试类中创建多个不同形状的对象，用多态的方式调用其计算方法并打印结果。
         */
        Circle circle = new Circle();
        circle.setBanjin(10.00);
        circle.calculateArea();
        circle.calculatePerimeter();

        Rectangle rectangle = new Rectangle();
        rectangle.setBian(100.00);
        rectangle.calculateArea();
        rectangle.calculatePerimeter();


        //接口练习
        /**
         * 接口练习：
         * 设计一个Swimmable接口，包含方法swim()（描述游泳动作）；设计一个Flyable接口，包含方法fly()（描述飞行动作）。
         * 创建Duck（鸭子）类，实现Swimmable和Flyable接口；创建Fish（鱼）类，实现Swimmable接口。
         * 在测试类中调用这些类的方法，观察接口的使用效果。
         */
        Duck duck = new Duck();
        duck.fly();
        duck.swim();

        Fish fish = new Fish();
        fish.swim();


    }
}
